import Vue from 'vue'
import Vuex from 'vuex'
import { getUsrinfoBytoken } from './../api/login'

Vue.use(Vuex)

export default new Vuex.Store({
  // 1.所有的全局数据都储存在这里
  state: {
    user: '',
    isLogin: false, // 用于判断用户是否是登陆状态
    // 用户的性别
    genderObj: {
      0: '未知',
      1: '男',
      2: '女'
    }
  },

  // 2.只有mutations对象中可以修改state中的数据
  mutations: {
    // 给state中的user数据重新赋值
    // 1.将用户成功登录后的用户信息,储存到全局的数据中
    setUser (state, payload) {
      state.user = payload
    },
    // 2.用户成功登陆后,改变用户的登陆状态
    setIslogin (state, payload) {
      state.isLogin = payload
    }
  },
  // 3.在actions对象中  自定义异步处理函数
  actions: {
    // 自定义获取用户数据接口的方法
    async setUserinfo (context) {
      // 发送获取用户的请求 -- 属于异步操作
      const res = await getUsrinfoBytoken()
      // 调用mutation 中的setUser方法来给用户重新赋值
      context.commit('setUser', res.data.data)
    }
  },

  getters: {
    getState (state) {
      return function (id, prop) {
        return state.user[prop] && state.user[prop].includes(+id)
      }
    }

    // collectState (state) {
    //   return function (id) {
    //     return (
    //       state.user.collectArticles && state.user.collectArticles.includes(+id)
    //     )
    //   }
    // },
    // starState (state) {
    //   return function (id) {
    //     return state.user.starArticles && state.user.starArticles.includes(+id)
    //   }
    // }
  },
  modules: {}
})
